我们知道,ES6中有了一个新的语法糖,就是箭头函数,它的写法简便,功能多,让我们来看看它的相关面试题。同样,我们可以了解到有关this的题目
语法
let foo = ()=>{
console.log('This is a function')
}
foo(); // 'This is a function'
主要就是一个 => 箭头,前面是参数,后面是跟着代码块。 如果参数只有一个,可以不加括号 如果代码块只有一行并且是一个值的话,自动编译成 返回这个值,如果不是一个值,而是一个语句,那么也不用加花括号,也可以运行。
/*
let foo = (e) => {
return e * 2
}
*/
let foo = e => e * 2 // 等同于上面的代码
let result = foo(4)
console.log(result) // 8
箭头函数中的this
箭头函数没有this 它的this永远是它的父级,如果父级也没有,那就一直往上找,直到找到为止
箭头函数与普通函数的区别
箭头函数不可以被new 因箭头函数没有arguments,而且也没有原型, 而且call/apply/bind等方法对它也无效,因为它没有this,同时,它也没有super方法。和ES6中的类有很大的差别
THIS
JS中的this有一个原则,那就是,谁调用,this就指向谁。 如果是一个对象中的函数被调用,那么这个函数的this就是这个函数。 但是我们可以通过call/apply/bind的方式来解决这个问题。 明天我们专门出一个手写这些API的文~